Objectif : Désambiguïsation des intitulés de conférences renseignés dans les données HAL, en se basant sur le référentiel CORE
Données à nettoyer :
Données de référence :
| Variable | Stats / Values | Freqs (% of Valid) | Graph | Missing |
|---|---|---|---|---|
| bibtex_key [character] |
1. {Binary is the new Black 2. {FCA4AI@IJCAI2018 - 6th I 3. {IFOW 2020 - Integrated F 4. {LibraryPress@UF}} 5. {Workshop AutoML 2018 @ I [ 10086 others ] |
2 ( 0.0%) 2 ( 0.0%) 2 ( 0.0%) 2 ( 0.0%) 2 ( 0.0%) 10086 (99.9%) |
0 (0.0%) |
|
| article_type [character] |
1. booktitle =· 2. inproceedings 3. organization =· 4. publisher =· 5. series =· 6. title =· |
29 ( 0.3%) 10055 (99.6%) 2 ( 0.0%) 2 ( 0.0%) 1 ( 0.0%) 7 ( 0.1%) |
0 (0.0%) |
|
| title [character] |
1. Taking advantage of patho 2. Anticipation in the retin 3. New models and preprocess 4. Unit Commitment under Mar 5. An efficient domain decom [ 9927 others ] |
5 ( 0.0%) 4 ( 0.0%) 4 ( 0.0%) 4 ( 0.0%) 3 ( 0.0%) 10035 (99.8%) |
41 (0.4%) |
|
| author [character] |
1. Rubino, Gerardo 2. Laugier, Christian 3. Makhalova, Tatiana and Ku 4. Maumet, Camille 5. Merlet, Jean-Pierre [ 8406 others ] |
14 ( 0.1%) 13 ( 0.1%) 12 ( 0.1%) 12 ( 0.1%) 12 ( 0.1%) 9999 (99.4%) |
34 (0.3%) |
|
| url [character] |
1. https://hal-brgm.archives\ 2. https://hal-brgm.archives\ 3. https://hal-brgm.archives\ 4. https://hal-cea.archives-\ 5. https://hal-cea.archives-\ [ 10057 others ] | 1 ( 0.0%) 1 ( 0.0%) 1 ( 0.0%) 1 ( 0.0%) 1 ( 0.0%) 10057 (100.0%) |
34 (0.3%) |
|
| editor [character] |
1. ACM 2. Benzitoun, Christophe and 3. Chantal Keller and Timoth 4. IEEE 5. AFIHM [ 357 others ] |
11 ( 2.2%) 11 ( 2.2%) 9 ( 1.8%) 9 ( 1.8%) 8 ( 1.6%) 460 (90.6%) |
9588 (95.0%) |
|
| series [character] |
1. Lecture Notes in Computer 2. LNCS 3. Proceedings of Machine Le 4. Leibniz International Pro 5. CEUR Workshop Proceedings [ 1000 others ] |
291 (16.9%) 91 ( 5.3%) 30 ( 1.7%) 27 ( 1.6%) 23 ( 1.3%) 1260 (73.2%) |
8374 (82.9%) |
|
| volume [character] |
1. LNCS 2. 1 3. Lecture Notes in Computer 4. 2 5. 18 [ 675 others ] |
24 ( 2.0%) 21 ( 1.8%) 19 ( 1.6%) 11 ( 0.9%) 10 ( 0.8%) 1095 (92.8%) |
8916 (88.3%) |
|
| number [character] |
1. 1 2. 2 3. 3 4. 9 5. 16 [ 151 others ] |
13 ( 5.2%) 11 ( 4.4%) 7 ( 2.8%) 7 ( 2.8%) 6 ( 2.4%) 207 (82.5%) |
9845 (97.5%) |
|
| pages [character] |
1. 1-6 2. 1-8 3. 1-10 4. 1-4 5. 1-5 [ 2280 others ] |
275 ( 6.2%) 237 ( 5.3%) 162 ( 3.7%) 157 ( 3.5%) 137 ( 3.1%) 3470 (78.2%) |
5658 (56.0%) |
|
| year [character] |
1. 2018 2. 2019 3. 2020 4. 2021 5. 2022 |
2523 (25.0%) 2282 (22.6%) 1813 (18.0%) 1826 (18.1%) 1652 (16.4%) |
0 (0.0%) |
|
| month [character] |
1. Jun 2. Jul 3. Sep 4. Oct 5. Dec [ 7 others ] |
1534 (15.5%) 1259 (12.7%) 1244 (12.6%) 966 ( 9.8%) 921 ( 9.3%) 3977 (40.2%) |
195 (1.9%) |
|
| keywords [character] |
1. Formal Concept Analysis 2. accelerated fixed point ; 3. Adaptive Control ; Contro 4. Antivirus ; Evasion ; Win 5. biclustering ; FCA ; patt [ 4815 others ] |
3 ( 0.1%) 2 ( 0.0%) 2 ( 0.0%) 2 ( 0.0%) 2 ( 0.0%) 4843 (99.8%) |
5242 (51.9%) |
|
| pdf [character] |
1. https://hal-agroparistech\ 2. https://hal-agroparistech\ 3. https://hal-brgm.archives\ 4. https://hal-brgm.archives\ 5. https://hal-brgm.archives\ [ 8320 others ] | 1 ( 0.0%) 1 ( 0.0%) 1 ( 0.0%) 1 ( 0.0%) 1 ( 0.0%) 8320 (99.9%) |
1771 (17.5%) |
|
| hal_id [character] |
1. cea-01746138 2. cea-01854072 3. cea-01855997 4. cea-01883311 5. cea-02339800 [ 10085 others ] |
1 ( 0.0%) 1 ( 0.0%) 1 ( 0.0%) 1 ( 0.0%) 1 ( 0.0%) 10085 (100.0%) |
6 (0.1%) |
|
| hal_version [character] |
1. v1 2. v2 3. v3 4. v4 5. v5 [ 2 others ] |
9181 (91.0%) 700 ( 6.9%) 153 ( 1.5%) 37 ( 0.4%) 11 ( 0.1%) 8 ( 0.1%) |
6 (0.1%) |
|
| publisher [character] |
1. IEEE 2. Springer 3. ACM 4. Springer International Pu 5. ACM Press [ 160 others ] |
980 (40.0%) 415 (16.9%) 366 (14.9%) 165 ( 6.7%) 111 ( 4.5%) 415 (16.9%) |
7644 (75.7%) |
|
| doi [character] |
1. 10.1145/nnnnnnn.nnnnnnn 2. 10.1145/1122445.1122456 3. 10.4230/LIPIcs 4. 10.4230/LIPIcs.CVIT.2016. 5. 10.1007/978-3-030-27520-4 [ 3571 others ] |
6 ( 0.2%) 5 ( 0.1%) 4 ( 0.1%) 3 ( 0.1%) 2 ( 0.1%) 3578 (99.4%) |
6498 (64.4%) |
|
| organization [character] |
1. IEEE 2. ACM 3. INSA Lyon 4. Soci'et'e Franaise 5. IFAC [ 270 others ] |
52 (11.6%) 19 ( 4.2%) 17 ( 3.8%) 13 ( 2.9%) 10 ( 2.2%) 337 (75.2%) |
9648 (95.6%) |
|
| booktitle [character] |
1. CDC 2019 - 58th IEEE Conf 2. NeurIPS 2020 - 34th Confe 3. IFAC 2020 - 21st IFAC Wor 4. ICPR 2020 - 25th Internat 5. CDC 2018 - 57th IEEE Conf [ 7351 others ] |
29 ( 0.3%) 19 ( 0.2%) 18 ( 0.2%) 17 ( 0.2%) 16 ( 0.2%) 9963 (99.0%) |
34 (0.3%) |
|
| address [character] |
1. Paris, France 2. Virtual, France 3. Nice, France 4. Nancy, France 5. Lyon, France [ 2109 others ] |
362 ( 3.6%) 128 ( 1.3%) 123 ( 1.2%) 111 ( 1.1%) 110 ( 1.1%) 9257 (91.7%) |
5 (0.0%) |
| Variable | Stats / Values | Freqs (% of Valid) | Graph | Missing |
|---|---|---|---|---|
| title [character] |
1. Australian Institute of C 2. Australian Women in IT Co 3. IEEE Global Telecommunica 4. International Command and 5. International Conference [ 2201 others ] |
2 ( 0.1%) 2 ( 0.1%) 2 ( 0.1%) 2 ( 0.1%) 2 ( 0.1%) 2202 (99.5%) |
0 (0.0%) |
|
| Acronym [character] |
1. IDC 2. ISC 3. EGC 4. ICCC 5. ICEC [ 1963 others ] |
4 ( 0.2%) 4 ( 0.2%) 3 ( 0.1%) 3 ( 0.1%) 3 ( 0.1%) 2015 (99.2%) |
180 (8.1%) |
|
| Source [character] |
1. CORE2021 2. CORE2018 3. ERA2010 4. CORE2014 5. CORE2020 [ 2 others ] |
956 (43.2%) 741 (33.5%) 439 (19.8%) 36 ( 1.6%) 19 ( 0.9%) 21 ( 0.9%) |
0 (0.0%) |
|
| Rank [character] |
1. C 2. B 3. A 4. A* 5. Australasian [ 64 others ] |
982 (44.5%) 564 (25.6%) 334 (15.1%) 64 ( 2.9%) 61 ( 2.8%) 202 ( 9.2%) |
5 (0.2%) |
|
| DBLP [character] |
1. none 2. view |
1364 (61.7%) 848 (38.3%) |
0 (0.0%) |
|
| hasData? [character] |
1. No 2. Yes |
1504 (68.0%) 708 (32.0%) |
0 (0.0%) |
|
| Primary FoR [integer] |
Mean (sd) : 2517.5 (1889.4) min < med < max: 8 < 1006 < 4613 IQR (CV) : 3802 (0.8) |
43 distinct values | 99 (4.5%) |
|
| Comments [integer] |
Mean (sd) : 0.5 (4.4) min < med < max: 0 < 0 < 132 IQR (CV) : 0 (8.5) |
24 distinct values | 0 (0.0%) |
|
| Average Rating [character] |
1. N/A 2. 5.0 3. 4.0 4. 3.0 5. 4.5 [ 10 others ] |
1990 (90.0%) 104 ( 4.7%) 55 ( 2.5%) 13 ( 0.6%) 11 ( 0.5%) 39 ( 1.8%) |
0 (0.0%) |
|
| core_id [integer] |
Mean (sd) : 1106.5 (638.7) min < med < max: 1 < 1106.5 < 2212 IQR (CV) : 1105.5 (0.6) |
2212 distinct values (Integer sequence) |
0 (0.0%) |
Afin de maximiser le matching des intitulés de conférences, un travail de nettoyage et de lémmatisation est préalablement effectué Les intitulés sont ainsi mis en minuscules, sans accents et sans caractères spéciaux. Un match est opéré 2 fois pour faire correspondre les intitulés des données du HAL avec ceux du référentiel CORE.
Dans un premier temps, les chaînes de caractères formant l’intitulé des conférences HAL sont matchés avec celles du CORE, à partir de quoi on obtient une distance correspondant au nombre de caractères qui ne sont pas communs au 2 intitulés (si l’intitulé est exactement le même, la distance sera donc de 0). Cette manipulation est réalisée sur la variable HAL booktitle, matchée avec la variable CORE title indiquant l’intitulé des conférences.
Dans un deuxième temps ce sont seulement les acronymes qui sont matchés entre les données HAL et le référentiel CORE. Ces derniers sont extraits du nom de conférence disponible dans le champ “booktitle” des données HAL. La jointure se fait cette fois sur une base de match exact, contrairement aux manipulations réalisées en premier temps sur les intitulés des conférences. Ainsi, lorsque l’acronyme extrait du titre disponible dans les données HAL correspond à l’acronyme CORE, les informations du référentiel sont récupérées et viennent enrichir les données HAL.
La première jointure est réalisée en plafonnant la distance entre les 2 chaînes de caractères à 50 caractères. Pour chaque communication HAL, plusieurs conférences sont matchées avec un score de distance allant de 0 à 50. Les données sont ensuite regroupées par communication (hal_id), puis, la conférence ayant le nom le plus proche de celui renseigné dans les données HAL est gardée. Dans le cas où 2 noms de conférences ont la même distance par rapport au nom CORE et que celle-ci est la distance minimale, les 2 conférences sont gardées dans les données enrichies, et devront alors faire l’objet d’un traitement manuel.
Les intitulés originaux des communications et conférences des 2 sources de données sont réinjectés dans les données, à la place des intitulés lémmatisés.
Dans la table ci-dessous, les colonnes hal_title à booktitle proviennent de HAL ; les colonnes core_title à Primary FoR proviennent de CORE ; les colonnes distance et method sont générées par l’algorithme de comparaison.
Cette première méthode de jointure non exacte sur les intitulés de conférences a permis d’enrichir 9000 communications sur 10096, soit 89%. Parmi ces jointures, 72 sont exactes, c’est-à-dire que l’intitulé dans les données HAL correspond exactement à celui de la conférence dans les données CORE (aux caractères spéciaux et majuscules près).
La deuxième jointure est réalisée en identifiant l’acronyme qui se trouve fréquemment dans l’intitulé de conférence des données HAL, pour le matcher avec les données CORE. Lorsque l’acronyme identifié se retrouve à l’identique dans le champ Acronym de CORE, alors l’entrée est enrichie du référentiel CORE. L’extraction de l’acronyme est faite de deux manières à partir du champ booktitle des données HAL : * le premier mot est extrait (excepté s’il s’agit d’un des 3 mots suivants : IEEE, ACM, SIAM qui sont des sociétés savantes organisant de nombreuses conférences) ; * le ou les mots entièrement en majuscules sont extraits ; * un arbitrage est effectué entre les 2 valeurs récupérées, selon un ensemble de règles implémentées dans le script visible après ces lignes.
Après jointure des acronymes extraits des noms de conférences HAL avec les données du CORE, les données sont réharmonisées avec les bases initiales pour récupérer les intitulés et acronymes non lemmatisés.
#--------- PREMIÈRE PASSE DE JOINTURE TOKEN
# Fonction pour retirer les mots doublons
rem_dup_word <- function(x){
paste(unique(trimws(unlist(strsplit(x,split=" ",fixed=F,perl=T)))),collapse =
" ")
}
# Extraction de l'acronyme depuis booktitle
hal_manip_token <- hal %>% rowwise() %>%
mutate(booktitle = removeWords(booktitle, c("IEEE ", "ACM ", "SIAM ")),
first_word = word(booktitle, 1), #premier mot du string
capital_word = rem_dup_word(sapply(str_extract_all(booktitle, "\\b[A-Z]+\\b"), paste, collapse= ' ')), #mots en lettres capitales uniques
capital_word = gsub("\\W*\\b\\w\\b\\W*", " ", capital_word)) %>% #retirer lettres toutes seules
mutate_all(na_if, "") %>%
mutate(hal_acronym = case_when(is.na(capital_word) ~ first_word,
is.na(first_word) ~ capital_word,
first_word == "In" ~ capital_word,
first_word == capital_word ~ first_word,
str_detect(first_word, "[0-9]") == TRUE ~ capital_word, #qd first_word contient un chiffre
nchar(capital_word) == 1 ~ first_word, #qd 1 seul caractère dans capital_word
grepl('[^[:alnum:]]', first_word) ~ capital_word, #qd first_word contient des caractères sépciaux (hors lettres et digits)
TRUE ~ capital_word)) %>%
select(title, booktitle, year, hal_id, hal_acronym) %>%
rename(hal_title = title)
# Lémmatisation des acronymes
hal_manip_token <- hal_manip_token %>%
mutate(hal_acronym = str_replace_all(hal_acronym, "[[:punct:]]", " "), # retrait de tous les caractères spéciaux
hal_acronym = tolower(hal_acronym)) %>% # minuscules
mutate(hal_acronym = strsplit(as.character(hal_acronym), " ")) %>% unnest(hal_acronym) %>% #split par ligne les acronymes multiples
mutate_all(na_if, "") %>%
mutate_all(na_if, " ") %>%
filter(hal_acronym != "ieee",
hal_acronym != "acm")
# Match sur les tokens communs
enriched_hal_token <- hal_manip_token %>%
filter(!is.na(hal_acronym)) %>%
left_join(.,
core_manip %>% select(core_title, core_acronym, Acronym, core_id, Source, Rank, `Primary FoR`),
by = c("hal_acronym" = "core_acronym")) %>%
filter(!is.na(Acronym)) %>%
mutate(method = "token") %>%
select("hal_title","year","hal_id","booktitle","core_title","Acronym","Source","Rank","Primary FoR","method","core_id")
# On remet les colonnes initiales (non lémmatisés)
enriched_hal_token <- enriched_hal_token %>%
# Noms des communications et conférences dans HAL
select(-c(hal_title, booktitle)) %>%
left_join(., hal %>% select(title, booktitle, hal_id), by = "hal_id") %>%
rename(hal_title = title) %>%
# Noms des conférences et acronymes dans CORE
select(-c(core_title)) %>% mutate(core_id = as.numeric(core_id)) %>%
left_join(., core %>% select(title, core_id), by = "core_id") %>%
rename(core_title = title) %>%
# Mise en forme finale
select("hal_title","year","hal_id","booktitle","core_title","Acronym","Source","Rank","Primary FoR","method") %>%
mutate(distance = NA_real_, .before = "method") #colonne distance vide pour token avant rbind
Cette deuxième méthode de jointure exacte par match de l’acronyme CORE, a permis d’enrichir 5135 communications sur 10096, dont 290 qui n’avaient pas été enrichies par la première méthode de distance entre les chaînes de caractères (score).
Finalement, nous consolidons les données HAL enrichies via la méthode de score et via la méthode de token dans une même base de données. Lorsqu’un match avec le référentiel CORE a été trouvé avec les 2 méthodes, c’est la méthode du token qui est préférée car selon nos observations, elle est généralement plus fiable. Ainsi, nous avons au total 9290 communications harmonisées et enrichies par les données CORE, soit 92% des données HAL récupérées par les années de 2018 à 2022. Parmi ces 9290 communications enrichies, 4155 sont finalement issues de la méthode du score (match non exact entre les intitulés de conférence) et 5135 de la méthode du token (match exact entre les acronymes de conférence).
Réalisé par Datactivist
2023/01/10